
import 'package:flutter/material.dart';
/*
const  声明的常量是在编译时确定的，永远不会改变

final  声明的常量允许声明后在赋值，赋值后不可改啊不能，final 声明的变量是在运行时确定的

final 不仅有const的编译时常量的特性，最重要的它是运行时常量，并且final是惰性初始化
 */


void main(){
  //const常量
  const PI = 3.14;
  // PI = 3.1415926; //const 定义的常量没法改变

  //final 常量
  final p1 = 3.14;

  //final 和 const区别：final 可以开始不赋值 只能赋一次；而final不仅有const的编译时常量

  //发现： const关键词在多个地方创建相同的对象的时候，内存中只保留了一个对象


  var o1 = new Object();
  var o2 = new Object();
  print(identical(o1, o2));//false
  print(identical(o1, o1));//true

  var o3 = Object();
  var o4 = Object();
  print(identical(o3, o4));//false
  print(identical(o3, o4));//true

  ///实例化常量构造函数
  ///o5,o6共享了存储空间
  var o5 = Object();
  var o6 = Object();
  print(identical(o5, o6));//true
  print(identical(o5, o6));//true
}